package demo.icanci.pattern.factory.simple;

import demo.icanci.pattern.factory.entity.DellMouse;
import demo.icanci.pattern.factory.entity.HpMouse;
import demo.icanci.pattern.factory.entity.Mouse;

/**
 * mouse factory
 * 
 * 简单工厂：
 * - 需要创建的对象较少
 * - 客户端不关心对象的创建过程
 * 优点：
 * - 可以对创建的对象进行加工，对客户端隐藏相关细节
 * 缺点：
 * - 因创建逻辑复杂的或者创建对象过多，就是造成工厂的臃肿
 * - 新增、删除子类都会违反开闭原则（对拓展开放，对修改关闭）
 * 
 * @author icanci
 * @date Created in 2021/02/04 22:55
 * @version 1.0
 */
public class MouseFactory {
    public static Mouse createMouse(int type) {
        switch (type) {
            case 0:
                return new DellMouse();
            case 1:
                return new HpMouse();
            default:
                return new DellMouse();
        }
    }

    public static void main(String[] args) {
        Mouse mouse = MouseFactory.createMouse(0);
        mouse.sayHi();
    }
}
